package br.com.sig.cadastro.endereco.business.model.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;

import br.com.sig.business.model.entity.BaseEntity;
import br.com.sig.cadastro.endereco.business.model.enumeration.TipoEndereco;
import br.com.sig.cadastro.endereco.business.model.enumeration.TipoLogradouro;

@Entity
@Table(schema="sig_cadastro", name="endereco")
public class Endereco extends BaseEntity {

	private static final long serialVersionUID = 3786530039800237623L;
	
	private TipoLogradouro tipoLogradouro;
	private String logradouro;
	private Integer numero;
	private String complemento;
	private String bairro;
	private Uf uf;
	private String cidade;
	private String cep;
	private TipoEndereco tipoEndereco;
	
	@NotNull
	@Column(name = "tipo_logradouro" , nullable = true)
	@Enumerated(EnumType.STRING)
	public TipoLogradouro getTipoLogradouro() {
		return tipoLogradouro;
	}
	
	public void setTipoLogradouro(TipoLogradouro tipoLogradouro) {
		this.tipoLogradouro = tipoLogradouro;
	}

	@NotNull
	@Column(nullable = true)
	public String getLogradouro() {
		return logradouro;
	}
	
	public void setLogradouro(String logradouro) {
		this.logradouro = logradouro;
	}
	
	@NotNull
	@Column(nullable = true)	
	public Integer getNumero() {
		return numero;
	}
	
	public void setNumero(Integer numero) {
		this.numero = numero;
	}
	
	public String getComplemento() {
		return complemento;
	}
	
	public void setComplemento(String complemento) {
		this.complemento = complemento;
	}
	
	@NotNull
	@Column(nullable = true)	
	public String getBairro() {
		return bairro;
	}
	
	public void setBairro(String bairro) {
		this.bairro = bairro;
	}
	
	@NotNull
	@Column(nullable = true)
	@Enumerated(EnumType.STRING)
	public Uf getUf() {
		return uf;
	}
	
	public void setUf(Uf uf) {
		this.uf = uf;
	}

	@NotNull
	@Column(nullable = true)	
	public String getCidade() {
		return cidade;
	}
	
	public void setCidade(String cidade) {
		this.cidade = cidade;
	}
	
	@NotNull
	@Column(nullable = true)	
	public String getCep() {
		return cep;
	}
	
	public void setCep(String cep) {
		this.cep = cep;
	}
	
	@NotNull
	@Enumerated(EnumType.STRING)
	@Column(name = "tipo_endereco", nullable = true)	
	public TipoEndereco getTipoEndereco() {
		return tipoEndereco;
	}
	
	public void setTipoEndereco(TipoEndereco tipoEndereco) {
		this.tipoEndereco = tipoEndereco;
	}
}